home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 2005 October
/
PCWOCT05.iso
/
Software
/
FromTheMag
/
XAMPP 1.4.14
/
xampp-win32-1.4.14-installer.exe
/
xampp
/
php
/
pear
/
Math
/
test
/
testMath_Fibonacci.php
next >
Wrap
PHP Script
|
2004-03-24
|
3KB
|
102 lines
<?php
// $Id: testMath_Fibonacci.php,v 1.1 2003/01/02 01:57:00 jmcastagnetto Exp $
include_once 'Math/Fibonacci.php';
$idx = 20;
echo "Calculate F($idx), fast equation = ";
$fib =& Math_Fibonacci::term($idx);
echo $fib->toString()."\n";
$idx = 55;
echo "Calculate F($idx), lookup table = ";
$fib =& Math_Fibonacci::term($idx);
echo $fib->toString()."\n";
$idx = 502;
echo "Calculate F($idx), addition loop = ";
$fib = Math_Fibonacci::term($idx);
echo $fib->toString()."\n";
echo "\nSeries from F(0) to F(10):\n";
$series = Math_Fibonacci::series(10);
foreach ($series as $n=>$fib) {
echo "n = $n, F(n) = ".$fib->toString()."\n";
}
echo "\nand now from F(11) to F(19):\n";
$series = Math_Fibonacci::series(11, 19);
foreach ($series as $n=>$fib) {
echo "n = $n, F(n) = ".$fib->toString()."\n";
}
echo "\nChecking if 26 and 4181 are Fibonacci numbers\n";
$verb = Math_Fibonacci::isFibonacci(new Math_Integer(26)) ? 'is' : 'is not';
echo "26 $verb a Fibonacci number\n";
$verb = Math_Fibonacci::isFibonacci(new Math_Integer(4181)) ? 'is' : 'is not';
echo "4181 $verb a Fibonacci number\n";
echo "\nDecompose 34512\n";
$decarr = Math_Fibonacci::decompose(new Math_Integer(34512));
foreach ($decarr as $fib) {
$index = Math_Fibonacci::getIndexOf($fib);
echo "F(".$index->toString().") = ".$fib->toString()."\n";
}
echo "\nF(n) closest to 314156 is: ";
$fib = Math_Fibonacci::closestTo(new Math_Integer(314156));
echo $fib->toString()."\n\n";
echo 'The index for 1597 is : ';
$idx = Math_Fibonacci::getIndexOf(new Math_Integer(1597));
echo $idx->toString()."\n\n";
$bigint = '3141579834521345220291';
echo "Finding the Fibonacci numbers that add up to $bigint\n";
$series = Math_Fibonacci::decompose(new Math_Integer($bigint));
foreach ($series as $fib) {
$index = Math_Fibonacci::getIndexOf($fib);
echo "F(".$index->toString().") = ".$fib->toString()."\n";
}
// Benchmark below requires PEAR::Benchmark, PEAR::Math_Stats
// and PEAR::Math_Histogram
$benchmark = false;
if ($benchmark) {
require_once 'Benchmark/Iterate.php';
require_once 'Math/Histogram.php';
// benchmark the fast algorithm
$index = 45;
// benchmark the lookup table
//$index = 100;
// benchmark the addition loop
//$index = 1000;
$runs = 2000;
$bench =& new Benchmark_Iterate();
echo "\n\nBenchmarking:\n";
echo "Calculating F($index) $runs times = ".$index."\n";
$bench->run($runs, 'Math_Fibonacci::term', $index);
$res1 = $bench->get();
// get some basic stats and clean up arrays for Math_Histogram
echo "term($index) : avg time = {$res1['mean']} ({$res1['iterations']})\n";
unset($res1['mean']);
unset($res1['iterations']);
echo '----> max: '.max($res1).', min: '.min($res1).', count: '.count($res1)."\n";
echo "\nFull Stats\n";
echo "term($index)\n";
$h = new Math_Histogram();
$h->setData($res1);
$h->calculate();
echo $h->printHistogram();
print_r($h->getDataStats());
echo $h->toSeparated();
}
// vim: ts=4:sw=4:et:
// vim6: fdl=0:
?>